home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS in a Box 7
/
BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso
/
Files
/
Mag
/
H-L
/
LASGNOTE.TXT.cpt
/
LASGNOTE.TXT
Wrap
Text File
|
1992-01-22
|
30KB
|
987 lines
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A brief note: What follows is a small sampler of some of the exciting
things we are doing on GEnie PSRT. Come visit us over on page 835!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ************************************************************************
% ************************************************************************
% LaserWriter G Preliminary Snoop
% ************************************************************************
%
% SUMMARY: PSRT Guru Don Lancaster reviews his first impressions on the
% LaserWriter G, including "secret" utilities to control the
% photograde and resolution enhancements, an open font path
% grabbing example routine, and full dictionary dumps.
%
% Portions reprinted from Don Lancaster's ASK THE GURU III.
%
% Copyright c 1991 by Don Lancaster. All rights reserved.
% Free help line and additional info: (602) 428-4073.
%
% ************************************************************************
% Name of textfile: LASGNOTE.TXT
% Source: SYNERGETICS
% Author: Don Lancaster
% Desc: LaserWriter G preliminary snoop
% Date: December 15, 1991
% Release: 1.0
% Status: Copyright c 1991 by Don Lancaster and Synergetics.
% 3860 West First Street, Thatcher, AZ. (602) 428-4073.
% All commercial rights reserved. Personal use permitted
% so long as this header remains present and intact.
% PostScript Secrets Book + Disk costs $39.50. VISA/MC.
% Approx length: 31K
%
% Keywords: PSRT, LaserWriter, G, Guru, PostScript, Photograde
% Resolution Enhancement, utility
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SOME PRELIMINARY LASERWRITER G SNOOOPING AROUND
===============================================
by Don Lancaster
Hoo Haw. And GOTCHA!!
Apple purportedly has published a POSTSCRIPT ADDENDUM FOR THE LASERWRITER
F and G. Unfortunately, after zillions of calls and email, I've yet to
see a copy. And the LaserWriter G is TOTALLY USELESS without this document
in any non-Mac environment.
So, what follows is my preliminary snooping around to try and guess what
has to be in the addendum.
SOME VERY EARLY COMMENTS:
=========================
The LaserWriter G is stunning real Adobe PostScript Level II on a Canon SX
engine. You gotta have it NOW. Nothing else matters.
Important advantages of level II include open font paths, full fax ability,
filters, video compression, binary format, faster hex dumps, full forms
capability, more color options, cacheable user paths, and a soft ice cream
dispenser.
Full details in the RED BOOK II, in stock here via [SYNERGETICS] email.
The G is also the first sanely priced machine that lets you do medium to
medium-high quality photographic halftones as a routine part of your
laser printing.
The G is an incredible memory hog in the photograde mode. Five megs isn't
enough to print a full sheet. you need eight. You are allowed thirty-two.
You can mix and match serial 19200 baud from an IBM or whatever with
Appletalk from the Mac. Invisibly and on the fly. Just be sure to end
each serial file with a [D].
The Zapf Dingbats are no longer ROM resident. You have to download them or
get them off disk. There is a new Emulator font on which I am not yet clear.
I didn't find any way to shut off the Photogray with the Mac utilities.
Apparently you are only supposed to turn off the Photogray from an IBM or
an Apple IIe. (see below).
The comm buffer lengths and allowable number of stack entries in a proc
are now much higher.
The speed of the G is nice but not stunning. Meowwrrr, our puddy tat, prints
in 24 seconds, compared to 36 on a turbo PS820. On the other hand, my
histogramstuff is only slightly faster. I suspect the greatest improvements
take place in character rendering and in non-linear clipping operations.
Most users, of course, will SEVERELY baud rate themselves on the LaserWriter
G, and, thus, all timing measurements (except those DIRECTLY running from
hard disk files) will thus be TOTALLY MEANINGLESS.
The edge enhancement is horizontal only, giving a pseudo 300x600 resolution.
A special ethernet connector is needed before you can use ethernet. I do
suspect that ethernet will be crippled by forced AppleTalk supervisory
overhead. The timing results of other reviewers support this.
My prediction is around 17 kilobaud effective for AppleTalk and 21 kilobaud
effective for Ethernet, when running a typical PostScript 10K file. Or around
a third of the speed of an Apple IIe game paddle port. Thus, hacked Shared
SCSI comm is the ONLY fast way to talk to the G.
The hard disk system is different enough that you have to reinitialize. But
apparently the same commands remain. Apparently the font cache is now only
allowed to be read from outside the server loop.
The PhotoGrade looks great, but it might not work too well for camera ready
output. It also requires adjustment and should use special toner. I suspect
that plain old 600 x 600 is a SLIGHTLY better choice overall. But the QMS
MR series is still stuck down on level I.
The absence of a bolt-on duplex option is MONUMENTALLY STUPID. Duplexing
ridiculously improves your throughput and stunningly adds to employee
morale. Scrap rates are negligible and errors are far less.
FONT PATHS ARE NOW FULLY OPEN! (see below)
Some results follow in more or less random order...
SETTING PHOTOGRADE AND RESOLUTION ENHANCEMENT:
==============================================
First, here's about as blunt an instrument as you can get. There's no obvious
way to "capture" outgoing mac commands from within the G utilities. Since
most persistent value changing utilities start with a ....
serverdict begin 0 exitserver
I simply redefined "begin" to print the rest of the message! Like so...
serverdict begin 0 exitserver % make it persistent
1000 string /strrx exch def % define a string
/Helvetica findfont [10 0 0 10 0 0] makefont setfont % pick font
/begin {currentfile strrx readline pop /msg exch def
50 300 moveto msg show showpage} def
Nee nee naa naa noo noo noo. Also hoo boy.
One minor gotcha: The utilities will not change something that does not need
changed. So if something isn't readable (such as a PhotoGrade screen) change
to another one and then try again.
This was used to dump the key PhotoGrade and Resolution enhancement details.
The key commands all reside in the --pagedevice-- dictionary
Here is how to read the --pagedevice-- (or any other) dictionary...
currentpagedevice {exch == == (\r) print flush} forall
And here is what the dictionary looks like...
/PostRenderingEnhance
false
/PreRenderingEnhance
true
/HWResolution
[300 300]
/MediaWeight
-null-
/Install
{currentpagedevice dup /PreRenderingEnhanceDetails get
/ActualPreRenderingEnhance get {/PreRenderingEnhanceDetails get
/DefaultHalftone get /Halftone findresource} {pop <<
/SpotFunction {abs exch abs 2 copy add 1 gt
{1 sub dup mul exch 1 sub dup mul add
1 sub} {dup mul exch dup mul add 1 exch
sub} ifelse} /HalftoneType 1 /Frequency 60 /Angle 45 >>}
ifelse sethalftone {} settransfer false setstrokeadjust
/DefaultColorRendering /ColorRendering findresource
setcolorrendering}
/NumCopies
-null-
/InputAttributes
-dict-
/ManualFeedTimeout
60
/PreRenderingEnhanceDetails
-dict-
/PageSize
[612 792]
/BeginPage
{pop}
/OutputFaceUp
false
/Policies
-dict-
/ExitJamRecovery
false
/ManualFeed
false
/EndPage
{exch pop 2 ne}
/ImagingBBox
-null-
/OutputPage
true
/MediaType
-null-
/Margins
[0 0]
/MediaColor
-null-
Note that PreRenderingEnhance is the Photograde and PostRenderingEnhance
is the resolution enhancement
Soooooo......
TO TURN ON THE RESOLUTION ENHANCEMENT:
======================================
serverdict begin 0 exitserver
<</PostRenderingEnhance true>>setpagedevice
quit
TO TURN OFF THE RESOLUTION ENHANCEMENT:
=======================================
serverdict begin 0 exitserver
<</PostRenderingEnhance false>>setpagedevice
TO TURN ON THE PHOTOGRADE:
===========================
serverdict begin 0 exitserver
<</PreRenderingEnhance true>>setpagedevice
quit
TO TURN OFF THE PHOTOGRADE:
===========================
serverdict begin 0 exitserver
<</PreRenderingEnhance false>>setpagedevice
quit
TO CHANGE THE SELECTED HALFTONE SCREENS:
========================================
The slider in the SET PHOTOGRADE Mac utility has five positions. From
left to right they set screens of 53, 75, 83, 106, and 150 DPI
53 DOT, 45 DEGREE (leftmost slider)
===================================
serverdict begin 0 exitserver
<<<</PreRenderingEnhanceDetails<</DefaultHalftone/53x45>>>>setpagedevice
quit
75 DOT, 0 DEGREE (slider left of center)
========================================
serverdict begin 0 exitserver
<<<</PreRenderingEnhanceDetails<</DefaultHalftone/75x0>>>>setpagedevice
83 DOT, 56 DEGREE (center slider)
===================================
serverdict begin 0 exitserver
<<<</PreRenderingEnhanceDetails<</DefaultHalftone/83x56>>>>setpagedevice
quit
106 DOT, 45 DEGREE (slider right of center and DEFAULT)
========================================================
serverdict begin 0 exitserver
<<<</PreRenderingEnhanceDetails<</DefaultHalftone/106x45>>>>setpagedevice
quit
150 DOT, 0 DEGREE (rightmost slider)
======================================
serverdict begin 0 exitserver
<<<</PreRenderingEnhanceDetails<</DefaultHalftone/160x0>>>>setpagedevice
quit
HARD DISK COMMANDS
==================
These should be the same as in the Apple White Book and in my ASK THE GURU
reprints. Both Available via [SYNERGETICS] email. More on this later.
FONT PATH GRABBING:
==================
Grabbing font paths for perspective, star wars, etc, is trivially simple
/Helvetica findfont [50 0 0 50 0 0] makefont setfont
0 0 moveto mark
(T) false charpath
{/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx} pathforall
] cvx /tee exch def
100 200 moveto tee stroke
showpage
Needless to say, I will be going bonkers over this later. The trick to a
nonlinear text transform is simply to intercept the four pathforall
procs, and then substitute x' and y' for each x and y of each moveto,
lineto, and for all six control points of each curveto.
More details in LASERWRITER SECRETS and ASK THE GURU, available via
[SYNERGETICS] email.
Lots of characters are allowed in your font path, and you can easily
change fonts on the fly.
SOME DICTIONARY DUMPS
=====================
Here's the contents of some of the dictionaries used in the LaserWriter G
statusdict
==========
/b5tray
/setdefaulttimeouts
/setpagestackorder
jobname
revision
/lettertray
/diskstatus
/manualfeed
/setprintername
/sccbatch
/legaltray
/setsoftwareiomode
/margins
/setsccinteractive
/setmargins
/printername
/a4tray
/realformat
/checkpassword
/byteorder
product
/defaulttimeouts
/setuserdiskpercent
/diskonline
/pagestackorder
/ramsize
waittimeout
/setdosysstart
/setjobtimeout
/dosysstart
/pagecount
/jobtimeout
/initializedisk
/hardwareiomode
/softwareiomode
buildtime
/setdostartpage
/sethardwareiomode
/sccinteractive
/emulate
/userdiskpercent
/dostartpage
appletalktype
/setsccbatch
systemdict
==========
/eexec
/setfont
/flush
/rectstroke
/==
/stroke
/rotate
/ge
/rootfont
/inueofill
/stack
/currentcolorspace
/count
/arct
/exit
/xyshow
/invertmatrix
/setshared
/moveto
/currentcolortransfer
/writehexstring
/executeonly
/dict
/def
/currentglobal
/countdictstack
/filter
/serialnumber
/rcheck
/dup
/type
/scheck
/cshow
/quit
/executive
/currentcmykcolor
/fill
/setcolorrendering
/FontDirectory
/flattenpath
/setvmthreshold
/flushfile
/transform
/ueofill
/readonly
revision
/undefineuserobject
/resyncstart
/readstring
/sin
/ineofill
/for
/ISOLatin1Encoding
/currentdash
/resourceforall
/setcachedevice2
/deletefile
/arcto
/findfont
/end
/vmstatus
/setlinecap
/loop
/scale
/pathforall
/currentmiterlimit
/currentstrokeadjust
/search
/setdash
/currentpacking
/gt
/inustroke
/currentdict
/currentscreen
/token
/stop
/SharedFontDirectory
/repeat
/=print
/filenameforall
/xshow
/writestring
/handleerror
/getinterval
/get
/exec
/currentflat
/readline
/round
/errordict
/packedarray
/setpagedevice
/currenttransfer
/Run
/setlinejoin
/setcharwidth
/clear
/defaultmatrix
/setfileposition
/idiv
/false
/identmatrix
/mark
/setcachelimit
/forall
/cleardictstack
/userdict
/cvr
/exch
/widthshow
/aload
/currenthsbcolor
/version
/truncate
/cachestatus
/currentrgbcolor
/awidthshow
/arc
/floor
/wcheck
/setcmykcolor
/arcn
/echo
/devdismount
/bind
/uappend
/eq
/not
/devforall
/currentfile
/cvi
/noaccess
/setsystemparams
/currentsystemparams
/currentobjectformat
/currentcolorscreen
/setlinewidth
/realtime
/<<
/currentcacheparams
/sethalftone
/rectclip
/eofill
/currentgstate
/yshow
/string
/copypage
/if
product
/currentcolorrendering
/internaldict
/save
/idtransform
/start
/currentmatrix
/stopped
/ustrokepath
/cvn
/]
/astore
/concatmatrix
/gcheck
/closepath
/.error
/findencoding
/currentlinejoin
/execdict
/setundercolorremoval
/stringwidth
/ufill
/neg
/grestore
/execform
/selectfont
/languagelevel
/cvlit
/execstack
/undefineresource
/initgraphics
/cvs
/bytesavailable
/restore
/where
/setgstate
/startjob
/begin
/definefont
/newpath
/usertime
/currentlinewidth
/null
/devformat
/StandardEncoding
/setmatrix
/ucache
/currentpagedevice
/erasepage
/systemdict
/roll
/readhexstring
/write
/xcheck
/maxlength
/setglobal
/atan
/anchorsearch
/image
/known
/setuserparams
/>>
/=
/setcachedevice
/log
/rmoveto
/length
/imagemask
/upath
/statusdict
/undefinefont
/closefile
/translate
/mul
/clippath
/array
/add
/rcurveto
/execuserobject
/[
/abs
/currentlinecap
/srand
/index
/store
/rand
/ifelse
/currentdevparams
/currentpoint
/$error
/strokepath
/resourcestatus
/undef
/setmiterlimit
/setoverprint
/itransform
/print
/pstack
/curveto
/setpacking
/show
/inufill
/ashow
/countexecstack
/grestoreall
/makepattern
/setcolorspace
/GlobalFontDirectory
/pop
/scalefont
/put
/setblackgeneration
/setscreen
/instroke
/xor
/read
/cvrs
/setcolorscreen
/charpath
/setobjectformat
/setcacheparams
/pathbbox
/counttomark
/mod
/currentundercolorremoval
/vmreclaim
/fileposition
/ceiling
/matrix
/globaldict
/concat
/currenthalftone
/currentcolor
/renamefile
/shareddict
/initclip
/glyphshow
/setpattern
/setcolor
/setbbox
/status
/file
/rlineto
/defineuserobject
/div
/bitshift
/currentoverprint
buildtime
/true
/defineresource
/lineto
/dictstack
/sqrt
/initmatrix
/run
/copy
/eoclip
/settransfer
/dtransform
/setflat
/rrand
/exp
/putinterval
/cleartomark
/nulldevice
/colorimage
/currentuserparams
/setdevparams
/showpage
/ucachestatus
/ustroke
/infill
/sub
/setcolortransfer
/resetfile
/currentgray
/load
/makefont
/setucacheparams
/ln
/currentshared
/or
/devstatus
/devmount
/findresource
/=string
/prompt
/sethsbcolor
/gstate
/setgray
/setrgbcolor
/rectfill
/currentfont
/currentblackgeneration
/setstrokeadjust
/gsave
/clip
/ne
/cos
/writeobject
/printobject
/le
/and
/reversepath
/lt
/cvx
/kshow
execdict
===========
/execdepth
/idleproc
/banner
/nestprompt
/binary
/quitflag
/checkquit
/copyright
/stmtfile
serverdict
==========
/emumode
/exchdef
/setrealdevice
/duprealdevice
/productexec
/getjobstms
/firstjobfileopen
/timeoutdict
/batchidleproc
/curdflttimeouts
/stdin
/stdout
/cleanupjob
/firstjob
/setstreams
/jobend
/execjob
/exitserver
/stdname
/exechplj
/server
/productsetstreams
/dexch
/execmap
/inserver
/settimeouts
/productinit
/execpostscriptbatch
Note: To access internaldict, you have to preceed it with the holiest of
the most sacred of Adobe mantras, namely 1183615869.
internaldict
============
/@ifor
/InvalidFont
/ForkStart
/@exec
/CircleFont
/printerclose
/hplj
/vmbuildtime
/@dictforall
/resourceforall
/@aborted
/@definefont
/getcategorydata
/$trace
/enableinterrupt
/clearinterrupt
/reallyenhanced
/ErodeSW
/@stopped
/FlxProc
/productdictname
/ljtestpage
/ylck
/errordevice
/engineclass
/eCCRun
/fontrun
/disableinterrupt
/CharMap
/@arrayforall
/@loop
/@repeat
/@exit
/CCRun
/@undefinefont
/xlck
/superexec
/systempatch
/emuprocdict
/undefineresource
/genericresourceforall
/hpljcleanup
/Magic
/@run
/setstdio
/ResourceDir
/resourcestatus
/implicitresourceforall
/genericresourcedir
/@stringforall
/lck
FilterDict
/LaserJetEmuDict
/aborted
/$pgdevicedict
/paramsforall
/defineresource
/@rfor
/StemSnapLength
/defaultspotfunction
/findresource
/strtlck
/LaserJetEmulatorVersion
userdict
==========
/b5
/bander
/quit
/a4
/note
/serverdict
/a4small
/#copies
/stretch
/letter
/legal
/lettersmall
/smooth4
filterdict
==========
/RunLengthEncode
/DCTEncode
/ASCIIHexDecode
/LZWEncode
/ASCII85Decode
/LZWDecode
/NullEncode
/RunLengthDecode
/DCTDecode
/SubFileDecode
/ASCIIHexEncode
/CCITTFaxDecode
/ASCII85Encode
/CCITTFaxEncode
globaldict
==========
(empty)
% Related GEnie PSRT Downloads:
% ============================
109 -- Working with Raw PostScript
121 -- Filetypes in the PSRT
217 -- The Introduction File
245 -- PSRT cross-reference (use if you do NOT have a PS printer)
246 -- PSRT cross-reference (use if you HAVE a PS printer)
077 -- Book-on-Demand printing
120 -- What is PostScript?
220 -- The Gonzo Justification documentation file
310 -- PostScript for IBM tutorial
330 -- Master Names & Numbers List and Directory Builder
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Portions reprinted from Don Lancaster's ASK THE GURU III.
% Available via [SYNERGETICS] email on GEnie.
% Write or call for your free Laser Printing insider secrets brochure
% and/or your free PostScript insider secrets brochure.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FREE VOICE HELPLINE AND ADDITIONAL INFO: (602) 428-4073
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%